#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

// 有名管道的路径
#define FIFO_PATH "/home/gec/my_fifo"

int main(int argc, char const *argv[])
{
	// 判断有名管道文件是否存在，如果不存在则创建，如果存在，则打开
	if(access(FIFO_PATH, F_OK) != 0 )// 成立则表示文件不存在
	{
		// 创建有名管道
		int ret = mkfifo(FIFO_PATH, 0777);
		if(ret == -1)
		{
			perror("fifo error\n");
			return -1;
		}
	}
	
	// 打开管道文件
	int fifo_fd = open(FIFO_PATH, O_RDWR);
	if(fifo_fd == -1)
	{
		perror("open error\n");
		return -1;
	}

	// 进程1向管道中写入数据
	char w_buf[1024] = {0};
	while(1)
	{
		memset(w_buf, 0, 1024);
		printf("请输入写给对方的数据\n");
		scanf("%s", w_buf);
		// 将数据写入管道文件
		write(fifo_fd, w_buf, strlen(w_buf));
		if(strcmp(w_buf, "bye") == 0)
			break;
	}
	close(fifo_fd);
	
	return 0;
}
